package com.xiao.domain.pojo;
import java.util.Date;
import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.experimental.Accessors;

/**
 * 菜单权限表(SysMenu)表实体类
 *
 * @author xxz
 * @since 2024-06-14 18:08:02
 */
@SuppressWarnings("serial")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_menu")
@Accessors(chain = true) // 变成链式编程，特点是,set 返回值是 自己本身，而不是 void 用来弥补 stream 中 map 不能返回为 void 的缺点
/*  举例:
  public SysMenu setId(Long id) { // 原本返回 void
        this.id = id;
        return this;
    }*/
public class SysMenu implements Serializable {
//菜单ID
@TableId
private Long id;
//菜单名称
private String menuName;
//父菜单ID
private Long parentId;
//显示顺序
private Integer orderNum;

//路由地址
private String path;

//组件路径
private String component;

//是否为外链（0是 1否）
private Integer isFrame;

//菜单类型（M目录 C菜单 F按钮）
private String menuType;

//菜单状态（0显示 1隐藏）
private String visible;

//菜单状态（0正常 1停用）
private String status;

//权限标识
private String perms;

//菜单图标
private String icon;

//创建者
@TableField(fill = FieldFill.INSERT)
private Long createBy;

//创建时间
@TableField(fill = FieldFill.INSERT)
private Date createTime;

//更新者
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateBy;

//更新时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
//备注
private String remark;

//删除标志（0 代表未删除，1 代表已删除）
private String delFlag;

// 子菜单 表示这个字段，不存在于数据库，避免 mybatis_plus 查询时 java.sql.SQLSyntaxErrorException: Unknown column 'children' in 'field list' 异常
@TableField(exist = false)
private List<SysMenu> children;

}